package com.dkh.recommend.utils.coreMaths;



import com.dkh.recommend.entity.TbRelate;
import com.dkh.recommend.utils.CoreMathsUtils;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 核心算法
 *
 */
public class ItemCF {

    /**
     * 方法描述: 推荐电影id列表
     *
     * @param itemId 当前电影id
     * @param list 用户电影评分数据
     * @return {@link List<Long>}
     * @date 2023年02月02日 14:51:42
     */
    public static List<Long> recommend(Long itemId, List<TbRelate> list) {
        //按音乐分组
        Map<Long, List<TbRelate>>  itemMap=list.stream().collect(Collectors.groupingBy(TbRelate::getMusicId));
        //获取其他音乐与当前音乐的关系值
        Map<Long,Double>  itemDisMap = CoreMathsUtils.computeNeighbor(itemId, itemMap,1);
        //获取关系最近音乐
        double maxValue=Collections.max(itemDisMap.values());
        return itemDisMap.entrySet().stream().filter(e->e.getValue()==maxValue).map(Map.Entry::getKey).collect(Collectors.toList());
    }


}
